//
//  main.c
//  系统中内存分区
//
//  Created by ws on 2017/7/21.
//  Copyright © 2017年 王松. All rights reserved.
//
#include <stdio.h>
//全局变量：放在全局区
int global = 20;
/**
 从上到下分别是:栈、堆、全局区(静态区)、常量区、代码区
 栈(stack):函数中定义变量存储在栈中,当调用函数的时候函数中定义的变量会被添加到栈中,当函数离开的时候,所以被添加的变量都会被移除,栈在最高的地址上,所以添加的变量地址会逐渐变小
 堆(heap):现在还没有用到,OC中通过类创建对象就放在这里,堆是一块动态内存,当程序运行时候动态分配给变量,
 它可以长时间存在.
 全局(globals):定义在函数外边的全局变量就放在这个,这里,这里的变量在程序已启动就被创建,你可以自由的更改他们.
 常量区(constants):常量在系统一运行被创建,常量区的内存是只读的,如常量字符串就放在这个区.你可以读他们,但是不可以修改他们
 代码区(code):代码区是只读的,该区域是用来存放程序的代码的.

总结:从高地址到低地址
 栈(stack):存放局部变量,内存是由系统管理的
 堆(heap):用来存放对象的,他由程序员自己申请自己释放的,它的内存需要程序员自己管理的
 全局区(globals):存放全局变量与静态变量,由系统管理
 常量区(constants):用来存放常量的,内存是由系统管理的,它是只读区
 代码区(code):用来存放代码的,内存是由系统管理的,它是只读区
 
 */
int main(int argc, const char * argv[]) {
//  局部变量：栈中
    int num = 10;
//  常量区
    "abc";
    return 0;
}
